/**
 * 允许Check状态修改前做某些处理(比如弹出警告对话框)的CheckBox
 */

package com.tools.cleanmaster.ui.view;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.CheckBox;

/**
 * 允许Check修改时，执行所设置的IOnPreCheckChangedListener，比如弹出对话框来表示警告
 * 
 * @author ouyang
 */
public class CheckBoxPreAction extends CheckBox {
    public interface IOnPreCheckChangedListener {
        void onPreCheckChanged();
    }

    private IOnPreCheckChangedListener mOnPreCheckedListener = null;

    private IOnPreCheckChangedListener mOnPreUnCheckedListener = null;

    /**
     * @param context
     */
    public CheckBoxPreAction(Context context) {
        super(context);
    }

    /**
     * @param context
     * @param attrs
     */
    public CheckBoxPreAction(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    /**
     * @param context
     * @param attrs
     * @param defStyle
     */
    public CheckBoxPreAction(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    public boolean performClick() {
        if (!isChecked() && mOnPreCheckedListener != null) {
            mOnPreCheckedListener.onPreCheckChanged();
            return true;
        } else if (isChecked() && mOnPreUnCheckedListener != null) {
            mOnPreUnCheckedListener.onPreCheckChanged();
            return true;
        } else {
            return super.performClick();
        }
    }

    /**
     * 设置checked前的listener
     * 
     * @param onPreCheckedListener
     */
    public void setOnPreCheckedListener(IOnPreCheckChangedListener onPreCheckedListener) {
        mOnPreCheckedListener = onPreCheckedListener;
    }

    /**
     * 设置unchecked前的listener
     * 
     * @param onPreUnCheckedListener
     */
    private void setOnPreUnCheckedListener(IOnPreCheckChangedListener onPreUnCheckedListener) {
        mOnPreUnCheckedListener = onPreUnCheckedListener;
    }
}
